const { RateLimiterMemory } = require("rate-limiter-flexible");

exports.rateLimiter = () => {
    return async (ctx, next) => {
        // 初始化内存限流器
        const rateLimiter = new RateLimiterMemory({
            points: 100, // 每个 IP 每分钟 100 个请求
            duration: 60 // 请求周期 60 秒
        });
        try {
            // 检查请求是否超过限流
            await rateLimiter.consume(ctx.ip); // 根据 IP 限制
            await next(); // 没有超过限流则继续执行下一个中间件
        } catch (rejRes) {
            // 超过限流，返回错误响应
            ctx.status = 429;
            ctx.body = {
                code: 1,
                message: "请求频率过高，请稍后再试。"
            };
        }
    };
};
